package com.ssy.lingxi.order.model.constant;

import com.ssy.lingxi.common.language.LanguageHolder;

/**
 * 订单操作方法枚举（主要用于记录订单内、外流转记录）
 * @author 万宁
 * @version 2.0.0
 * @date 2021-07-19
 */
public enum OrderOperationEnum {
    /**
     * 新增订单 - 1
     */
    CREATE(1, "新增订单"),

    /**
     * 修改订单 - 2
     */
    MODIFY(2, "修改订单"),

    /**
     * 删除订单 - 3
     */
    DELETE(3, "删除订单"),

    /**
     * 提交审核 - 4
     */
    SUBMIT_VALIDATE(4, "提交审核"),

    /**
     * 审核订单(一级） - 5
     */
    VALIDATE_GRADE_ONE(5, "审核订单(一级)"),

    /**
     * 审核订单(二级) - 6
     */
    VALIDATE_GRADE_TWO(6, "审核订单(二级)"),

    /**
     * 提交订单 - 7
     */
    SUBMIT(7, "提交订单"),

    /**
     * 接受订单 - 8
     */
    ACCEPT(8, "接受订单"),

    /**
     * 不接受订单 - 9
     */
    REFUSE(9, "不接受订单"),

    /**
     * 确认电子合同 - 10
     */
    CONFIRM_CONTRACT(10, "确认电子合同"),

    /**
     * 订单支付 - 11
     */
    PAY(11, "订单支付"),

    /**
     * 支付成功 - 12
     */
    PAY_SUCCESS(12, "支付成功"),

    /**
     * 支付失败 - 13
     */
    PAY_FAILED(13, "支付失败"),

    /**
     * 确认支付结果 - 14
     */
    CONFIRM_PAYMENT(14, "确认支付结果"),

    /**
     * 确认支付未到账 - 15
     */
    DENY_PAYMENT(15, "确认未到账"),

    /**
     * 新增销售发货单 - 16
     */
    CREATE_DELIVERY(16, "新增销售发货单"),

    /**
     * 新增物流单 - 17
     */
    CREATE_LOGISTICS(17, "新增物流单"),

    /**
     * 订单发货确认 - 18
     */
    CONFIRM_DELIVERY(18, "订单发货确认"),

    /**
     * 新增采购收货单 - 19
     */
    CREATE_RECEIPT(19, "新增采购收货单"),

    /**
     * 订单收货确认 - 20
     */
    CONFIRM_RECEIPT(20, "订单收货确认"),

    /**
     * 确认回单 - 21
     */
    CONFIRM_REPLY(21, "确认回单"),

    /**
     * 归档 - 22
     */
    ARCHIVE(22, "归档"),

    /**
     * 中止订单 - 23
     */
    TERMINATE(23, "中止订单"),

    /**
     * 取消订单 - 24
     */
    CANCEL(24, "取消订单"),

    /**
     * 调整送货时间 - 25
     */
    MODIFY_DELIVER_PERIOD(25, "调整送货时间"),

    /**
     * 修改订单单价 - 26
     */
    MODIFY_UINT_PRICE(26, "修改订单单价"),

    /**
     * 修改订单运费 - 27
     */
    MODIFY_FREIGHT(27, "修改订单运费"),

    /**
     * 退款 - 28
     */
    REFUND(28, "订单退款"),

    /**
     * 拼团成功 - 29
     */
    GROUP_SUCCESS(29, "拼团成功"),

    /**
     * 拼团失败 - 30
     */
    GROUP_FAILED(30, "拼团失败");

    OrderOperationEnum(Integer code, String name) {
        this.code = code;
    }

    /**
     * 操作枚举值
     */
    private Integer code;

    public Integer getCode() {
        return code;
    }

    public String getName() {
        return LanguageHolder.getName(this.getClass(), this.code);
    }

    public static String getNameByCode(Integer code) {
        return LanguageHolder.getName(OrderOperationEnum.class, code);
    }
}
